package org.lazy.util;

import java.lang.reflect.Field;
import java.util.Date;
/**
 * 
 * @description Object工具类
 * @author Anan
 * @time 2013年8月6日 下午6:51:18
 */
@SuppressWarnings("rawtypes")
public class ObjectUtil {
	private ObjectUtil(){};
	/**
	 * 
	 * @description 判断一个对象属性值是否全为null或空字符串
	 * @author Anan
	 * @time  2013年8月6日 下午6:48:25
	 * @param obj
	 * @return
	 */
	public static boolean isAllBlankProperty(Object obj) {
		boolean _flag = true;
		Class fieldType = null;
		Object fieldValue = null;
		Field[] fields = null;
		int length = 0;
		if(obj==null){
			return true;
		}
		fields = obj.getClass().getDeclaredFields();
		length = fields.length;
		try {
			Field.setAccessible(fields, true);
			for (int i = 0; i < length; i++) {
				fieldType = fields[i].getType();
				fieldValue = fields[i].get(obj);
				if(isNotBlank(fieldType, fieldValue)){
					_flag = false;
					break;
				}
			}
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		}
		return _flag;
	}
	/**
	 * 
	 * @description 判断一个对象属性值是否不为null或空字符串
	 * @author Anan
	 * @time  2013年8月6日 下午6:48:25
	 * @param obj
	 * @return
	 */
	public static boolean isNotAllBlankProperty(Object obj){
		return !isAllBlankProperty(obj);
	}
	
	private static boolean isNotBlank(Class fieldType,	Object fieldValue){
		return !isBlank(fieldType, fieldValue);
	}
	/**
	 * 
	 * @description 对象值数据是否为空
	 * @author Anan
	 * @time  2013年8月6日 下午7:14:55
	 * @param objType  对象类型
	 * @param objValue 对象值
	 * @return
	 */
	private static boolean isBlank(Class objType,Object objValue){
		boolean _flag = true;
		if(objType == String.class){
			if(objValue!=null){
				String value = objValue.toString().trim();
				if(value.length()>0){
					_flag = false;
				}
			}
		}else if(objType==Long.class){
			if(objValue!=null){
				_flag = false;
			}
		}else if(objType==Integer.class){
			if(objValue!=null){
				_flag = false;
			}
		}else if(objType==Date.class){
			if(objValue!=null){
				_flag = false;
			}
		}
		return _flag;
	}

	
//	public static void main(String[] args) {
//		ObjectTest o = new ObjectTest();
////		o.setId(1L);
//		o.setName("    ");
////		o.setDate(new Date());
//		boolean f = isAllBlankProperty(o);
//		System.out.println(f);
//	}

}

//class ObjectTest {
//	private Long id;
//	private String name;
//	private Integer age;
//	private Date date;
//	public Long getId() {
//		return id;
//	}
//	public void setId(Long id) {
//		this.id = id;
//	}
//	public String getName() {
//		return name;
//	}
//	public void setName(String name) {
//		this.name = name;
//	}
//	public Integer getAge() {
//		return age;
//	}
//	public void setAge(Integer age) {
//		this.age = age;
//	}
//	public Date getDate() {
//		return date;
//	}
//	public void setDate(Date date) {
//		this.date = date;
//	}
//}
